package com.framework.seedkit.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by yisong on 16/11/24.
 */

public class StringUtil {
    /**
     * 描述: 检测字符串是否为空
     * @param str
     * @return 为空返回false，否则返回true
     */
    public static boolean isNotEmpty(String str) {
        if (null == str) {
            return false;
        }
        return !"".equals(str.trim()) && !"null".equals(str.trim());
    }

    /**
     * 描述: 字符串 ===> Double
     */
    public static Double getDoubleData(Object str) {
        if(str == null) {
            return null;
        }
        if(isNotEmpty(str.toString())) {
            return Double.valueOf(str.toString());
        }
        return null;
    }

    /**
     * 描述: 字符串 ===> Inteter
     */
    public static Integer getIntegerData(Object str) {
        if(str == null) {
            return null;
        }
        if(isNotEmpty(str.toString())) {
            return Integer.valueOf(str.toString());
        }
        return null;
    }

    /**
     * 描述: 字符串 ===> Float
     */
    public static Float getFloatData(Object str) {
        if(str == null) {
            return null;
        }
        if(isNotEmpty(str.toString())) {
            return Float.valueOf(str.toString());
        }
        return null;
    }

    /**
     * 数字校验，判断字符串是否为数字
     * @param str	 源字符串
     * @param flag	 -1:校验是否为负数，1：校验是否为正数，0：表示校验所有数字
     * @return
     */
    public static boolean isNumeric(String str,int flag) {
        boolean temp = false;

        if (!isNotEmpty(str)) {
            return temp;
        }

        Pattern pattern = null;

        if (flag == 1) {
            pattern = Pattern.compile("[0-9]*");
        }else if (flag == -1){
            pattern = Pattern.compile("^-?[0-9]+");
        }else if (flag == 0){
            pattern = Pattern.compile("-?[0-9]+.?[0-9]+");
        }

        Matcher isNum = pattern.matcher(str);

        if (!isNum.matches()) {
            temp = false;
        }else {
            temp = true;
        }

        return temp;
    }

    /**
     * 检测是否为浮点数
     * @param num	待判断的字符串
     * @param type	校验的类型："0+"-非负浮点数   ;"+"-//正浮点数   ;"-0"-非正浮点数   ;"-"-//负浮点数
     * @return
     */
    public static boolean isFloatType(String num,String type){
        if (!isNotEmpty(num)) {	//为空直接返回false
            return false;
        }

        String eL = "";
        if(type.equals("0+")) eL = "^\\d+(\\.\\d+)?$";//非负浮点数
        else if(type.equals("+")) eL = "^((\\d+\\.\\d*[1-9]\\d*)|(\\d*[1-9]\\d*\\.\\d+)|(\\d*[1-9]\\d*))$";//正浮点数
        else if(type.equals("-0")) eL = "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$";//非正浮点数
        else if(type.equals("-")) eL = "^(-((\\d+\\.\\d*[1-9]\\d*)|(\\d*[1-9]\\d*\\.\\d+)|(\\d*[1-9]\\d*)))$";//负浮点数
        else eL = "^(-?\\d+)(\\.\\d+)?$";//浮点数
        Pattern p = Pattern.compile(eL);
        Matcher m = p.matcher(num);

        boolean b = m.matches();

        return b;
    }

    /**
     * 使用嵌套HTML处理特殊需求的字符串拼接,如控制字符串中部分字符的颜色与字体
     * @param str		需要特殊处理的，如表红
     * @param jointStr	字体变小的源数据
     * @return
     */
    public static String jointHandler(String str,String jointStr){
        if (!isNotEmpty(str)) {
            str = "--";
        }

        String tempString = "<big><font color='#eb4f4f'>" + str  +"</big></font>" + "<small>" + jointStr +"</small>";

        return tempString;
    }
}
